/**
 * 文件名:  debug.h
 * 作者:    wubo
 * 日期:    2021-01-17
 * 功能:
 *  打印调试信息相关接口
 */

#ifndef __DEBUG_H__
#define __DEBUG_H__
#include <stdio.h>

#define     MAX_DEBUG_MSG_SIZE      1024    /** 单条调试信息的最大长度 */

typedef enum
{
    LOG_OFF = 0,
    LOG_ERROR,
    LOG_WARNING,
    LOG_INFO,
    LOG_DEBUG,
} debug_level_em;

/**
 * 设置日志文件及日志过滤级别
 * param [in]  filename     调试日志文件名
 * param [in]  level        过滤的日志级别
 * param [in]  enable_dpkt  是否允许打印数据包
 */
void debug_level_set(char *filename, debug_level_em level, int enable_dpkt);

/**
 * \brief 打印数据包的专用接口，受enable_dpkt控制
 *
 * \param [in|out] fmt
 * \param [in|out] ...
 */
void debug_output_pkt(const char *fmt, ...);

/**
 * 日志调试接口 -- 简单版
 * param [in]  level 该条调试日志级别
 * param [in]  fmt  日志内容
 */
void debug_output_simple(debug_level_em type, const char *fmt, ...);

/**
 * 日志调试接口
 * param [in]  level 该条调试日志级别
 * param [in]  fmt  日志内容
 */
void debug_output(debug_level_em type, const char *file, const char *func, int lineno, const char *fmt, ...);
#define DEBUG(level, fmt, ...)  debug_output(level,  __FILE__, __func__, __LINE__, fmt "\n", ##__VA_ARGS__); \


void pr_hexdump(const char* p, int len);
// 打印请求包
void client_pkt_dump(char *buf, int len);
// 打印响应包
void server_pkt_dump(char *buf, int len);

#endif
